package cn.good.yan;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


/**
 * SpringBoot项目 - Oauth2
 * 【授权码模式】 客户端 请求权限服务器，拿到code（授权码），然后再请求得到Token，是有有效期的，拿到Token去请求资源服务器，请求正常的接口
 * 步骤1：【授权码模式】  -- 通过令牌获取资源服务器里的资源
 * 1.访问：http://localhost:8082/oauth/authorize?response_type=code&client_id=admin&redirect_uri=http://baidu.com&scope=all
 * 上面的参数，在 AuthorizationConfig 里配置
 * 2.输入用户名和密码，在UserDetailsServiceImpl类下，配置密码
 * 3.页面，选择：Approve  进行页面授权，跳转到目的地址页  https://www.baidu.com/?code=hN8e2F  code后面就是授权码
 * 4.POST请求工具：获取token令牌
 * 请求地址：http://localhost:8082/oauth/token
 * body体内容：
 * grant_type ：authorization_code
 * code：hN8e2F
 * client_id：admin
 * redirect_uri：http://baidu.com
 * scope：all
 * 基本的authorization ，admin是admin，Password是1122 在AuthorizationConfig类里配置
 * 得到结果
 * {
 * "access_token": "83c9b428-0481-4c72-adb3-6e096821056b",
 * "token_type": "bearer",
 * "expires_in": 43199,
 * "scope": "all"
 * }：
 * 5。得到令牌，访问资源管理器
 * 访问：http://localhost:8082/user/getUser
 * Token里，存放 83c9b428-0481-4c72-adb3-6e096821056b 。进行请求
 * 得到结果：
 * {
 * "password": null,
 * "username": "admin",
 * "authorities": [
 * {
 * "authority": "admin"
 * }
 * ],
 * "accountNonExpired": true,
 * "accountNonLocked": true,
 * "credentialsNonExpired": true,
 * "enabled": true
 * }
 * <p>
 * 【密码模式】 客户端 请求权限服务器，拿到code（授权码），然后再请求得到Token，是有有效期的，拿到Token去请求资源服务器，请求正常的接口
 * 步骤1：【密码模式】  -- 通过密码进行访问资源服务
 * 1.POST请求工具：获取token令牌
 * 请求地址：http://localhost:8082/oauth/token
 * body体内容：
 * grant_type ：password
 * username：admin
 * password：123456
 * scope：all
 * 基本的authorization ，admin是admin，Password是1122 在AuthorizationConfig类里配置
 * 得到结果
 * {
 * "access_token": "bca0e5bc-72ed-4547-ac5e-2c6d0e8ecc79",
 * "token_type": "bearer",
 * "expires_in": 43199,
 * "scope": "all"
 * }
 * 2 。得到令牌，访问资源管理器
 * 访问：http://localhost:8082/user/getUser
 * Token里，存放 bca0e5bc-72ed-4547-ac5e-2c6d0e8ecc79 。进行请求
 * 得到结果：
 * 跟上面的授权码模式一样的效果
 *
 * @author shengren.yan
 * @create 2023-09-27
 */
@MapperScan("cn.good.yan.model.mapper")
@SpringBootApplication

public class Oauth2Application {

    public static void main(String[] args) {
        SpringApplication.run(Oauth2Application.class, args);
    }

}